/*
	Copyright (C) 2010 2011 Rémi Thebault

	This program is free software; you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation; either version 3 of the License, or
	(at your option) any later version.

	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

#ifndef __pc_xml_storable_h__
#define __pc_xml_storable_h__

#include <QDomDocument>
#include <QDomElement>
#include <QString>
#include <QList>


namespace PC {


class XmlFormatError {};


class XmlStorable {
public:

	XmlStorable() {}
	virtual ~XmlStorable() {}

	virtual QString elementName() const =0;

	virtual void loadFromElement (const QDomElement& element);
	virtual QDomElement saveToElement (QDomDocument& doc) const;

	QList<QDomElement> directElementsByTagName(const QDomElement& element, const QString& tagName);

};

}

#endif /* __pc_xml_storable_h__ */
